home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / pcgames.arc / DECIS.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  4.1 KB  |  127 lines

  1. 10  CLS:SCREEN 0,0,0:WIDTH 40:LOCATE 17,13:PRINT "DECISION MAKER":LOCATE 24,1
  2. 20  'DECISION MAKER BY PHIL FELDMAN AND TOM RUGG
  3. 40  'NOT FOR SALE
  4. 100  ON ERROR GOTO 1000
  5. 110  DIM F$(20),L$(20),F(20),M(20,20),V(20),Z(20)
  6. 120  PRINT "I CAN HELP MAKE DECISIONS BY CHOOSING":PRINT "THE BEST OPTION OUT OF SEVERAL "
  7. 122  PRINT "ALTERNATIVES.  ALL I NEED TO DO IS":PRINT "ORGANIZE INFORMATION YOU ALREADY HAVE."
  8. 124  PRINT:PRINT "WHICH OF THESE BEST DESCRIBES THE":PRINT "DECISION YOU HAVE TO MAKE ?":PRINT
  9. 140  PRINT "1-CHOOSE AN ITEM"
  10. 150  PRINT "2-CHOOSE A COURSE OF ACTION"
  11. 160  PRINT:INPUT "WHICH TYPE (1 OR 2) IS APPLICABLE: ",A
  12. 170  PRINT:IF A<1 OR A>2 THEN GOTO 160
  13. 175  IF A=2 THEN GOTO 190
  14. 180  PRINT:PRINT "NAME THE ITEM YOU NEED TO CHOOSE:":INPUT "",S$
  15. 184  IF LEN(S$)<20 THEN GOTO 200
  16. 186  GOSUB 910:GOTO 180
  17. 190  S$="COURSE OF ACTION"
  18. 200  CLS:PRINT:PRINT "I WILL NOW NEED A LIST OF EACH ":PRINT S$;" THAT YOU ARE CONSIDERING."
  19. 210  PRINT "PLEASE INPUT THEM ONE AT A TIME.":PRINT "THE ORDER IS OF NO IMPORTANCE."
  20. 220  PRINT:PRINT "HOW MANY ARE THERE ALTOGETHER":INPUT "(LIMIT 19):",A
  21. 230  IF A>1 AND A<21 THEN GOTO 310
  22. 240  GOSUB 560:GOTO 220
  23. 310  LO=A:FOR I=1 TO LO:PRINT
  24. 314  PRINT "NUMBER ";I;", PLEASE: ";:INPUT "",L$(I):IF LEN(L$(I))<20 THEN GOTO 320
  25. 316  GOSUB 910:GOTO 314
  26. 320  NEXT I:CLS:PRINT
  27. 330  PRINT "O.K. THIS IS THE LIST.":PRINT
  28. 340  FOR I=1 TO LO:LOCATE ,3:PRINT I;" ";L$(I):NEXT I
  29. 345  PRINT:GOSUB 900
  30. 350  IF A$="N" THEN GOTO 200 ELSE IF A$<>"Y" THEN GOTO 345
  31. 360  CLS:PRINT:PRINT "O.K., HOW MANY DIFFERENT FACTORS ARE":PRINT "IMPORTANT TO YOU IN CHOOSING A "
  32. 365  PRINT S$;:INPUT " (LIMIT 19):",A
  33. 370  IF A>1 AND A<21 THEN GOTO 400
  34. 380  GOSUB 560:GOTO 360
  35. 400  FO=A:PRINT:PRINT "I NEED A LIST OF EACH OF THESE."
  36. 410  FOR I=1 TO FO:PRINT
  37. 412  PRINT "FACTOR NUMBER";I;": ";:INPUT "",F$(I):IF LEN(F$(I))<20 THEN NEXT I:GOTO 420
  38. 415  GOSUB 910:GOTO 412
  39. 420  CLS:PRINT:PRINT "LOOK AT THE LIST OF FACTORS YOU HAVE":PRINT "PROVIDED AND DECIDE WHICH IS THE MOST"
  40. 430  PRINT "IMPORTANT.":PRINT
  41. 440  FOR I=1 TO FO:LOCATE ,5:PRINT I;" ";F$(I):NEXT I
  42. 450  PRINT:PRINT "INPUT NUMBER OF MOST IMPORTANT FACTOR"
  43. 455  INPUT "(OR INPUT 0 TO CHANGE THE LIST):",A
  44. 460  IF A=0 THEN GOTO 360
  45. 470  IF A<1 OR A>FO THEN GOTO 450
  46. 480  F2=A:PRINT
  47. 490  PRINT "O.K. SUPPOSE WE IMAGINE A SCALE OF":PRINT "IMPORTANCE THAT RANGES FROM 0 TO 10."
  48. 500  PRINT F$(F2);" THEN HAS A VALUE OF":PRINT "10, IT BEING THE MOST IMPORTANT TO YOU."
  49. 510  PRINT "ON THIS SCALE, WHAT VALUE WOULD EACH OF"
  50. 520  PRINT "THE OTHER FACTORS HAVE (FRACTIONAL"
  51. 525  PRINT "VALUES ARE PERMISSABLE) ?"
  52. 530  PRINT:FOR I=1 TO FO
  53. 540  IF I=F2 THEN GOTO 570
  54. 550  PRINT F$(I);": ";:INPUT "",F(I):IF F(I)>-1 AND F(I)<11 THEN GOTO 570 ELSE GOSUB 560:GOTO 550
  55. 560  PRINT "YOUR INPUT IS INVALID, TRY AGAIN.":RETURN
  56. 570  NEXT I
  57. 572  F(F2)=10:C=0
  58. 574  FOR I=1 TO FO:C=C+F(I):NEXT I
  59. 576  FOR I=1 TO FO:F(I)=F(I)/C:NEXT I
  60. 580  CLS:PRINT:PRINT "NOW CONSIDER HOW EACH ";S$
  61. 590  PRINT "RATES WITH RESPECT TO THESE FACTORS,":PRINT "INDIVIDUALLY CONSIDERED"
  62. 610  PRINT
  63. 620  PRINT "NOW LET'S ARBITRARILY ASSIGN":PRINT L$(1);" A FIXED VALUE OF 10."
  64. 630  PRINT "THEN EVERY OTHER ";S$
  65. 640  PRINT "MUST BE GIVEN A NUMBER HIGHER OR LOWER":PRINT "THAN 10 ACCORDING TO HOW MUCH BETTER"
  66. 650  PRINT "OR WORSE THAN ";L$(1):PRINT "YOU THINK IT IS."
  67. 660  FOR I=1 TO FO
  68. 665    IF I>1 THEN CLS
  69. 670    PRINT:PRINT "CONSIDERING ";F$(I);" ONLY,":PRINT "AND GIVEN THAT ";L$(1);" HAS A"
  70. 680    PRINT "VALUE OF 10, WHAT VALUE WOULD YOU GIVE":PRINT "TO EACH OF THE FOLLOWING:":PRINT
  71. 700    FOR J=2 TO LO
  72. 710      PRINT L$(J);": ";
  73. 712      INPUT "",M(J,I)
  74. 714      IF M(J,I)>=0 THEN GOTO 730
  75. 720      PRINT "C'MON. NO NEGATIVE NUMBERS!":GOTO 710
  76. 730    NEXT J
  77. 732    PRINT
  78. 734  NEXT I
  79. 735    M(1,I)=10
  80. 736  FOR I=1 TO FO
  81. 738    C=0
  82. 739    FOR J=1 TO LO
  83. 740      C=C+M(J,I)
  84. 742    NEXT J
  85. 744    FOR J=1 TO LO
  86. 745      M(J,I)=M(J,I)/C
  87. 746    NEXT J
  88. 748  NEXT I
  89. 750  FOR J=1 TO LO
  90. 752    V(J)=0
  91. 754    FOR I=1 TO FO
  92. 756      V(J)=V(J)+M(J,I)*F(I)
  93. 760    NEXT I
  94. 762  NEXT J
  95. 764  FOR I=1 TO 20:Z(I)=I:NEXT I
  96. 766  C=LO-1
  97. 768  FOR J=1 TO LO
  98. 770    FOR I=1 TO C
  99. 772      N1=Z(I)
  100. 774      N2=Z(I+1)
  101. 776      IF V(N1)>V(N2) THEN GOTO 790
  102. 780      Z(I+1)=N1
  103. 782      Z(I)=N2
  104. 790    NEXT I
  105. 792  NEXT J
  106. 795  C1=Z(1):C2=Z(2):C=100/V(C1)
  107. 800  FOR J=1 TO LO:V(J)=C*V(J):NEXT J
  108. 805  D=V(C1)-V(C2)
  109. 810  CLS:PRINT:PRINT:PRINT "  WELL, YOUR BEST CHOICE SEEMS TO BE"
  110. 820  PRINT L$(C1);:IF D<10 THEN PRINT ", BUT IT'S PRETTY CLOSE."
  111. 830  IF D<20 AND D>=10 THEN PRINT " BY A FAIR MARGIN."
  112. 840  IF D>=20 THEN PRINT " BY A GOOD MARGIN."
  113. 850  PRINT:PRINT "  HERE'S THE FINAL LIST WITH"
  114. 860  PRINT L$(C1);" GIVEN A VALUE OF 100":PRINT "AND THE OTHERS SET ACCORDINGLY."
  115. 870  PRINT:PRINT:PRINT "RATING",S$:PRINT
  116. 872  FOR J=1 TO LO
  117. 874  C=Z(J)
  118. 876  V(C)=INT(V(C)*100+0.5)/100
  119. 880  PRINT " ";V(C),L$(C):NEXT J
  120. 890  PRINT:PRINT "I LEAVE THE REST UP TO YOU.":PRINT "GOOD LUCK!":STOP
  121. 900  INPUT "IS THIS CORRECT (Y OR N)";A$
  122. 904  IF A$="y" THEN A$="Y"
  123. 906  IF A$="n" THEN A$="N"
  124. 908  RETURN
  125. 910  PRINT:PRINT "PLEASE USE A SHORTER PHRASE. THANKS.":RETURN
  126. 1000  PRINT "BASIC ERROR ";ERR;"IN LINE ";ERL:ON ERROR GOTO 0:STOP
  127.